<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<meta name="keywords" content="spring,Spring,java,web,程序员,博客,IT,技术,移动开发,Web前端,企业架构,编程语言,互联网,数据库,技术博客,blog,分布式架构,分布式">
		<meta name="description" content="cdcoder是一个程序员学习交流平台，深度IT技术博客，移动开发博客,Web前端博客,企业架构博客,编程语言博客,互联网博客,数据库博客,IT blog,核心关注IT知识传播，共享。为更好的IT产业贡献一份微薄的力量。">
		<link rel="shortcut icon" href="/img/code.ico" />
		<link rel="bookmark"href="/img/code.ico" />
		<title>java相关知识</title>
		<link href="../css/index.css" rel="stylesheet">
		<style>
			body {
				font-size: 16px;
				font: 400 16px/1.62 Georgia, "Xin Gothic", "Hiragino Sans GB", "Droid Sans Fallback", "Microsoft YaHei", sans-serif;
				font-family: 'PT serif', 微軟正黑體, 微软雅黑, 华文细黑, Microsoft Yahei, Hiragino Sans GB, sans-serif;
				color: #D0CCCC;

				text-shadow: 0px 0px 1px rgba(24, 22, 22, 0.35);
				background-color: #000;
			}
		</style>
	</head>
	<body>

		<header>
			<div class="logo"><a href="/index.html">徐思润博客</a></div>
			<nav>
				<ul id="starlist">
					<li><a href="/java/index.html">java</a></li>
					<li><a href="/data/index.html">算法与数据结构</a></li>
					<li><a href="/db/mysql.html">数据库</a></li>
					<li><a href="/distribution/index.html">分布式</a></li>
					<li><a href="/framework/index.html">架构</a></li>
					<li><a href="/interview/index.html">面试与被面试</a></li>
					<li><a href="/live/index.html">日常生活</a></li>
					<li><a href="/about.html">关于我</a></li>
					<li><a href="/baby/index.html">baby墙</a></li>
				</ul>
			</nav>
		</header>
		<div class="box">
			<h1 style="text-align: center;">原型模式(Prototype  Pattern)</h1>
			<h2>1.定义</h2>
				<p style="">使用原型实例指定将要创建的对象类型，通过复制这个实例创建新的对象。这种创建对象叫原型模式</p>
			<h2>2.优点</h2>	
			<p>当创建新的对象实例较为复杂时，使用原型模式可以简化对象的创建过程，通过一个已有实例可以提高新实例的创建效率。</p>
			<p>可以动态增加或减少产品类。</p>
			<p>可以使用深克隆的方式保存对象的状态。</p>
			<p>原型模式提供了简化的创建结构。逃避构造函数的约束</p>
			<h2>3.缺点</h2>	
			<p>需要为每一个类配备一个克隆方法，而且这个克隆方法需要对类的功能进行通盘考虑，这对全新的类来说不是很难，但对已有的类进行改造时，不一定是件容易的事，必须修改其源代码，违背了“开闭原则”。</p>
			<p>在实现深克隆时需要编写较为复杂的代码。</p>
			
			<h2>4.使用场景</h2>	
			<p> 1.资源优化场景 类初始化需要消耗非常多的资源，这个资源包括数据/硬件等资源  </p>
			<p> 2.性能和安全要求的场景 比如hadoop沙箱环境</p>
			<p> 3.一个对象多个修改者的场景</p>
			<p> 4.实际的日常研发过程中很少单独使用原型模式，一般是和工厂方法模式一起组合使用</p>
			 <h2>5.代码地址</h2>	
			<p> 后面补上 </p>
			
			<a href="design_pattern.html">返回</a>
		 </div>
		<footer>
			<p>Design by <a href="http://cdcoder.cn" target="_blank">徐思润个人博客</a> </p>
			<p>备案号：<a href="/">蜀ICP备15014105号-1</a></p>
				<script type="text/javascript" src="https://s96.cnzz.com/z_stat.php?id=1277229191&web_id=1277229191"></script>
		</footer>

	</body>
</html>
